/**
 * @projectName leetode
 * @package cn.leetcode
 * @className cn.leetcode.t404
 * @copyright Copyright 2020 Thunisoft, Inc All rights reserved.
 */
package cn.leetcode;

/**
 * t404
 * @description
 * @author fei
 * @date 2025/9/10 16:59
 * @version 1.0
 */
/*
给定二叉树的根节点 root ，返回所有左叶子之和。

示例 1：

输入: root = [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中，有两个左叶子，分别是 9 和 15，所以返回 24
示例 2:

输入: root = [1]
输出: 0
 */
public class t404 {
    private int ans = 0;
    /*public int sumOfLeftLeaves(TreeNode root) {
        if (root==null){
            return 0;
        }
        int sum = sumOfLeftLeaves(root.left)+sumOfLeftLeaves(root.right);
        TreeNode left = root.left;
        if (left!=null && left.left==null && left.right==null){
            sum += left.val;
        }
        return sum;
    }*/
    public int sumOfLeftLeaves(TreeNode root) {
        if (root==null){
            return 0;
        }
        dfs(root);
        return ans;
    }

    public void dfs(TreeNode root){
        if (root== null){
            return;
        }
        dfs(root.left);
        dfs(root.right);
        TreeNode left = root.left;
        if (left != null && left.left == null && left.right == null){
            ans += left.val;
        }
    }
}
